package com.class05.i_polymorphic.b;

public class TestMain {
    //    生活中的例子：假设有一个动物园，里面有各种动物，如狗、猫等。我们可以将它们都看作是动物（Animal），
//    因为它们都是动物的一种。当我们需要对某种动物进行特殊处理时，例如喂食或者照顾，
//    我们可以将这种动物视为具体的子类（如Dog或Cat），这就是向上转型。但是，如果我们错误地将一个Dog对象当作Cat对象
//    来对待，就会出现问题，因为Dog和Cat是不同的动物，它们的行为和需求可能有所不同。这种情况下，
//    我们需要确保正确地识别动物的类型，以避免出现错误。
    public static void main(String[] args) {
        Animal animal = new Dog();//向上转型
        //ClassCastException,因为animal实际是一个Dog对象，不能转换为Cat类型
//        造型异常只可能在向下转型时出现

        try {
            Cat c = (Cat) animal;//向下转型
        } catch (ClassCastException e) {
            System.out.println("向下转型异常：" + e.getMessage());
        }


    }
}

class Animal {
}

class Cat extends Animal {
}

class Dog extends Animal {
}
